package com.company.huisuo.network.interceptor

import com.company.huisuo.network.auth.TokenManager
import com.company.huisuo.repository.AuthRepository
import kotlinx.coroutines.runBlocking
import okhttp3.Interceptor
import okhttp3.Response
import java.io.IOException

/**
 * Token刷新拦截器
 * 在token即将过期时自动刷新
 */
class TokenRefreshInterceptor : Interceptor {
    
    override fun intercept(chain: Interceptor.Chain): Response {
        val originalRequest = chain.request()
        
        // 检查是否需要token刷新（排除登录等不需要认证的接口）
        val url = originalRequest.url.toString()
        if (url.contains("device-api/meta/device/login")) {
            return chain.proceed(originalRequest)
        }
        
        // 检查token是否即将过期
        if (TokenManager.isTokenAboutToExpire() && TokenManager.isTokenValid()) {
            try {
                // 在协程中刷新token
                val success = runBlocking {
                    val authRepository = AuthRepository()
                    authRepository.refreshToken().getOrNull() ?: false
                }
                
                if (!success) {
                    // 刷新失败，清除token，需要重新登录
                    TokenManager.clearTokens()
                }
            } catch (e: Exception) {
                // 刷新异常，继续使用当前token
                println("Token刷新异常: ${e.message}")
            }
        }
        
        return chain.proceed(originalRequest)
    }
}